﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.Text;
using System.Data;

namespace WCFVeterinaria
{
    // NOTA: puede usar el comando "Rename" del menú "Refactorizar" para cambiar el nombre de interfaz "IService1" en el código y en el archivo de configuración a la vez.
    [ServiceContract]
    public interface IServiceVeterinaria
    {
        #region usuarios
        [OperationContract]
        Usuarios consultarUsuario(string id, string password);
        [OperationContract]
        void agregarUsuario(string id, string password, string nombre, string apellido, string identificacion);
        [OperationContract]
        void actualizarUsuario(string id2,string id, string password, string nombre, string apellido, string identificacion);
        [OperationContract]
        void eliminarUsuario(string id);
        [OperationContract]
        DataTable listarUsuarios();
        #endregion

        #region medicos
        [OperationContract]
        Medicos consultarMedico(int nroColegiado);
        [OperationContract]
        DataTable listarMedicos();
        [OperationContract]
        void agregarMedico(int nroColegiado, string nombre, string apellidos, string telefonoCelular, string email, string direccion);
        [OperationContract]
        void actualizarMedico(int nroColegiado, string nombre, string apellidos, string telefonoCelular, string email, string direccion);
        [OperationContract]
        void eliminarMedico(int nroColegiado);
        #endregion

        #region clientes
        [OperationContract]
        Clientes consultarCliente(string identificacionID);
        [OperationContract]
        DataTable listarClientes();
        [OperationContract]
        void agregarCliente(string identificacionID, string tipoIdentificacion, string nombre, string apellidos, string telefonoHabitacion, string telefonoCelular, string email, string direccion);
        [OperationContract]
        void actualizarCliente(string identificacionID, string tipoIdentificacion, string nombre, string apellidos, string telefonoHabitacion, string telefonoCelular, string email, string direccion);
        [OperationContract]
        void eliminarCliente(string identificacionID);
        #endregion

        #region claseAnimal
        [OperationContract]
        ClaseAnimal consultarClaseAnimal(int ClasificacionID);
        [OperationContract]
        DataTable listarClasesAnimal();
        [OperationContract]
        void agregarClaseAnimal(string nombre, string caracteristica);
        [OperationContract]
        void actualizarClaseAnimal(int ClasificacionID, string nombre, string caracteristica);
        [OperationContract]
        void eliminarClaseAnimal(int ClasificacionID);
        #endregion

        #region Animal
        [OperationContract]
        Animal consultaAnimal(int animalID);
        [OperationContract]
        DataTable listarAnimal();
        [OperationContract]
        void agregarAnimal(string nombre, string color, DateTime fechaNacimiento, int clasificacionID, string identificacionID);
        [OperationContract]
        void actualizarAnimal(int animalID, string nombre, string color, DateTime fechaNacimiento, int clasificacionID, string identificacionID);
        [OperationContract]
        void eliminarAnimal(int animalID);
        #endregion

        #region consultamedica
        [OperationContract]
        ConsultaMedica consultarConsultaMedica(int consultaID);
        [OperationContract]
        DataTable listarConsultaMedica();
        [OperationContract]
        void agregarConsultaMedica(int animalID, int nroColegiado,DateTime fechaHora,string detalle);
        [OperationContract]
        void actualizarConsultaMedica(int consultaID, int animalID, int nroColegiado, DateTime fechaHora, string detalle);
        [OperationContract]
        void eliminarConsultaMedica(int consultaID);
        #endregion
    }

    // Utilice un contrato de datos, como se ilustra en el ejemplo siguiente, para agregar tipos compuestos a las operaciones de servicio.
    [DataContract]
    public class Usuarios
    {
        [DataMember]
        public string IdUsuario
        { get; set; }
        [DataMember]
        public string Password
        { get; set; }
        [DataMember]
        public string Nombre
        { get; set; }
        public string Apellido
        { get; set; }
        [DataMember]
        public string Identificacion
        { get; set; }
    }

    [DataContract]
    public class Medicos
    {
        [DataMember]
        public int NroColegiado
        { get; set; }
        [DataMember]
        public string Nombre
        { get; set; }
        [DataMember]
        public string Apellidos
        { get; set; }
        [DataMember]
        public string TelefonoCelular
        { get; set; }
        [DataMember]
        public string Email
        { get; set; }
        [DataMember]
        public string Direccion
        { get; set; }
    }

    [DataContract]
    public class Clientes
    {
        [DataMember]
        public string IdentificacionID
        { get; set; }
        [DataMember]
        public string TipoDeIdentificacion
        { get; set; }
        [DataMember]
        public string NombreORazonSocial
        { get; set; }
        [DataMember]
        public string Apellidos
        { get; set; }
        [DataMember]
        public string TelefonoHabitacion
        { get; set; }
        [DataMember]
        public string TelefonoCelular
        { get; set; }
        [DataMember]
        public string Email
        { get; set; }
        [DataMember]
        public string Direccion
        { get; set; }
    }

    [DataContract]
    public class ClaseAnimal
    {
        [DataMember]
        public int ClasificacionID
        { get; set; }
        [DataMember]
        public string Nombre
        { get; set; }
        [DataMember]
        public string Caracteristica
        { get; set; }
    }

    [DataContract]
    public class Animal
    {
        [DataMember]
        public int AnimalID
        { get; set; }
        [DataMember]
        public string Nombre
        { get; set; }
        [DataMember]
        public string Color
        { get; set; }
        [DataMember]
        public DateTime FechaDeNacimiento
        { get; set; }
        [DataMember]
        public int ClasificacionID
        { get; set; }
        [DataMember]
        public string IdentificacionID
        { get; set; }
    }

    [DataContract]
    public class ConsultaMedica
    {
        [DataMember]
        public int ConsultaID
        { get; set; }
        [DataMember]
        public int AnimalID
        { get; set; }
        [DataMember]
        public int NroColegiado
        { get; set; }
        [DataMember]
        public DateTime FechaHora
        { get; set; }
        [DataMember]
        public String Detalle
        { get; set; }
    }

}

